﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using blackhouse.BlackApart.Business.Payments;

namespace blackhouse.BlackApart.Business.Reservations {
    public interface IUserApartmentsReservation {

        int ReservationId { get; }
        string ReservationNumber { get; }
        List<IReservation> Reservations { get; }
        IClient Client { get; }
        IPaymentType Payment { get; }
        DateTime ArrivalDate { get; }
        DateTime DepartureDate { get; }
        TimeSpan ArrivalTime { get; }
        double TotalPrice { get; }
        double TotalPriceWithoutRabat { get; }
        float Rabat { get; }
        bool VatInvoice { get; set; }
        ReservationStatus Status { get; }
        Guid Guid { get; }

        void SetClient(string email, string phoneNumber, string firstName, string lastName, string personTitle, string userPrefferCurrency);
        void SetDates(DateTime startDate, DateTime endDate);
        void SetPaymentType(IPaymentType paymentType);
        void SetReservationType(IReservationType reservationType);
        void SetApartment(Apartments.IApartment apartment, int numberOfPeoples);
        bool Save();
        IUserApartmentsReservation FindByNumber(string reservationNumber);
        void SendAsEMail();
        bool IsAuthentic(Guid toCheck);
        bool ChangeStatusTo(int statusId);

    }
}
